package com.atguigu.gmall.all.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.item.client.ItemFeignClient;
import com.atguigu.gmall.list.client.ListFeignClient;
import com.atguigu.gmall.model.list.SearchParam;
import com.atguigu.gmall.product.client.ProductFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller//返回页面，
//@RestController  返回json串
public class ItemController {

    @Autowired
    private ItemFeignClient itemFeignClient;
    @Autowired
    private ProductFeignClient productFeignClient;
    @Autowired
    private ListFeignClient listFeignClient;


    @RequestMapping("{skuId}.html")
    public String getItem(@PathVariable Long skuId , Model model){
        Result<Map> item = itemFeignClient.getItem(skuId);
        model.addAllAttributes(item.getData());
        return "item/index";
    }

//    @GetMapping({"/","index.html"})
//    public String index(HttpServletRequest request){
//        // 获取首页分类数据
//        Result result = productFeignClient.getBaseCategoryList();
//        request.setAttribute("list",result.getData());
//        return "index/index";
//    }

//    /**
//     * 列表搜索
//     * @param searchParam
//     * @return
//     */
//    @GetMapping("list.html")
//    public String search(SearchParam searchParam,Model model){
//        Result<Map> list = listFeignClient.list(searchParam);
//        model.addAllAttributes(list.getData());
//
//        // 记录拼接url；记录用户的检索条件
//        String urlParam = this.makeUrlParam(searchParam);
//        model.addAttribute("searchParam",searchParam);
//        model.addAttribute("urlParam",urlParam);
//        //  存储品牌的面包屑： 品牌：品牌的名称 传入的参数：3:华为
//        String trademarkParam = this.makeTrademarkParam(searchParam.getTrademark());
//        model.addAttribute("trademarkParam",trademarkParam);
//        //  平台属性面包屑：
//        List<Map> propsParamList = this.makePropsParamList(searchParam.getProps());
//        model.addAttribute("propsParamList",propsParamList);
////        根据用户点击的规则进行排序！
//        Map orderMap = this.makeOrderMap(searchParam.getOrder());
//        model.addAttribute("orderMap",orderMap);
//        return "list/index";
//    }
//
//    /**
//     * 根据用户点击的规则进行排序
//     * @param order
//     * @return
//     */
//    private Map makeOrderMap(String order) {
//        Map<Object, Object> map = new HashMap<>();
//        if (!StringUtils.isEmpty(order)){
//            //  order=2:asc 对其进行分割
//            String[] split = order.split(":");
//            if (split!=null&&split.length==2){
//                map.put("type",split[0]);
//                map.put("sort",split[1]);
//            }
//        }else {
//            //默认
//            map.put("type","1");
//            map.put("sort","desc");
//        }
//        return map;
//    }
//
//    /**
//     * 平台属性面包屑
//     * @param props
//     * @return
//     */
//    private List<Map> makePropsParamList(String[] props) {
//        //  声明一个集合
//        List<Map> list = new ArrayList<>();
//        if (props!=null&&props.length>0){
//            for (String prop : props) {
//                //  prop=3886:256G:内存 对其进行分割
//                String[] split = prop.split(":");
//                if (split!=null&&split.length==3){
//                    HashMap<String, Object> map = new HashMap<>();
//                    map.put("attrId",split[0]);
//                    map.put("attrValue",split[1]);
//                    map.put("attrName",split[2]);
//
//                    list.add(map);
//                }
//            }
//        }
//        return list;
//    }
//
//    /**
//     * 存储品牌的面包屑： 品牌：品牌的名称 传入的参数：3:华为
//     * @param trademark
//     * @return
//     */
//    private String makeTrademarkParam(String trademark) {
//        if (!StringUtils.isEmpty(trademark)){
//            String[] split = trademark.split(":");
//            if (split!=null&&split.length==2){
//                //  直接返回数据
//                return "品牌:"+split[1];
//            }
//        }
//        return null;
//    }
//
//    /**
//     * 记录用户的检索条件
//     * @param searchParam
//     * @return
//     */
//    private String makeUrlParam(SearchParam searchParam) {
//        StringBuilder urlParam = new StringBuilder();
//        //记录用户到底使用了哪些检索条件
//        //  检索入口有两个 一个是分类Id
//        // http://list.gmall.com/list.html?category3Id = 61
//        if (!StringUtils.isEmpty(searchParam.getCategory3Id())){
//            urlParam.append("category3Id=").append(searchParam.getCategory3Id());
//        }
//        if (!StringUtils.isEmpty(searchParam.getCategory2Id())){
//            urlParam.append("category2Id=").append(searchParam.getCategory2Id());
//        }
//
//        if (!StringUtils.isEmpty(searchParam.getCategory1Id())){
//            urlParam.append("category1Id=").append(searchParam.getCategory1Id());
//        }
//        //  一个是全文检索：http://list.gmall.com/list.html?keyword=手机
//        if (!StringUtils.isEmpty(searchParam.getKeyword())){
//            urlParam.append("keyword=").append(searchParam.getKeyword());
//        }
//        //  可以通过品牌检索： http://list.gmall.com/list.html?keyword=手机&trademark=2:华为
//        if (!StringUtils.isEmpty(searchParam.getTrademark())){
//            //  拼接字符串的长度大于0
//            if (urlParam.length()>0){
//                urlParam.append("&trademark=").append(searchParam.getTrademark());
//            }
//        }
//        //  平台属性：http://list.gmall.com/list.html?keyword=手机&props=3886:256G:内存&props=3588:3000万像素:摄像头像素
//        String[] props = searchParam.getProps();
//        if (props!=null && props.length>0){
//            for (String prop : props) {
//                if (urlParam.length()>0){
//                    urlParam.append("&props=").append(prop);
//                }
//            }
//        }
//        return "list.html?"+urlParam.toString();
//    }

}
